Complex computational problems can often be divided and distributed among multiple processing elements, where each processing element may work independently or in conjunction with other processing elements. A multiprocessor computer with flexible resources may group internal resources into one or more partitions, and configure and assign each partition to be responsible for a particular computational task or job.
Communication channels within a multiprocessor are often limited by geometric constraints. For example, processing elements are typically limited in their ability to communicate with other processing elements, and may only be able to communicate with those processing elements physically adjacent to them, such as in a one-dimensional row of processing elements, where each processing element has at most two neighbors with which it may communicate.
Systems that employ multi-port switches and additional network links between switches, such as wires, may provide a multiprocessor computer with more freedom to create partitions of resources that are less constrained by their geometry. What is needed is an efficient mechanism of allocation of resources in a multiprocessor computer to fully utilize this new level of flexibility.